{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "39da60db",
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7882c316",
   "metadata": {},
   "source": [
    "#### 当x为多维向量时，绘制多维向量的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "91d26f7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制正太分布的直方图\n",
    "plt.hist(np.random.randn(10000))\n",
    "plt.title('Example 1')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "00e81bbe",
   "metadata": {},
   "source": [
    "#### 当 bins 传入整数时，会分为 bins 数量的等宽桶"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ecd29df5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.random.randn(10000), bins=20)\n",
    "plt.title(\"Example 3\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fab6a1ca",
   "metadata": {},
   "source": [
    "#### 当 bins 传入序列时，会视作每个桶的边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "46df6ecb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.random.randn(10000), bins=[-3, -2, 0, 0.3, 3])\n",
    "plt.title(\"Example 4\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba5762b2",
   "metadata": {},
   "source": [
    "#### 当传入字符串时，例如 “fd”"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "67b81438",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.random.randn(10000), bins=\"fd\")\n",
    "plt.title(\"Example 5\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "25e9da5c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x432 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "# some random data\n",
    "x = np.random.randn(1000)\n",
    "y = np.random.randn(1000)\n",
    "\n",
    "\n",
    "def scatter_hist(x, y, ax, ax_histx, ax_histy):\n",
    "    # no labels\n",
    "    ax_histx.tick_params(axis=\"x\", labelbottom=False)\n",
    "    ax_histy.tick_params(axis=\"y\", labelleft=False)\n",
    "\n",
    "    # the scatter plot:\n",
    "    ax.scatter(x, y)\n",
    "\n",
    "    # now determine nice limits by hand:\n",
    "    binwidth = 0.25\n",
    "    xymax = max(np.max(np.abs(x)), np.max(np.abs(y)))\n",
    "    lim = (int(xymax/binwidth) + 1) * binwidth\n",
    "\n",
    "    bins = np.arange(-lim, lim + binwidth, binwidth)\n",
    "    ax_histx.hist(x, bins=bins)\n",
    "    ax_histy.hist(y, bins=bins, orientation='horizontal')\n",
    "\n",
    "#################################################\n",
    "\n",
    "# Start with a square Figure.\n",
    "fig = plt.figure(figsize=(6, 6))\n",
    "# Add a gridspec with two rows and two columns and a ratio of 1 to 4 between\n",
    "# the size of the marginal axes and the main axes in both directions.\n",
    "# Also adjust the subplot parameters for a square plot.\n",
    "gs = fig.add_gridspec(2, 2,  width_ratios=(4, 1), height_ratios=(1, 4),\n",
    "                      left=0.1, right=0.9, bottom=0.1, top=0.9,\n",
    "                      wspace=0.05, hspace=0.05)\n",
    "# Create the Axes.\n",
    "ax = fig.add_subplot(gs[1, 0])\n",
    "ax_histx = fig.add_subplot(gs[0, 0], sharex=ax)\n",
    "ax_histy = fig.add_subplot(gs[1, 1], sharey=ax)\n",
    "# Draw the scatter plot and marginals.\n",
    "scatter_hist(x, y, ax, ax_histx, ax_histy)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3551323a",
   "metadata": {},
   "source": [
    "#### Hatch-filled histograms （Hatch-filled直方图）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "f67c6aa8",
   "metadata": {},
   "outputs": [],
   "source": [
    "import itertools\n",
    "from functools import partial\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.ticker as mticker\n",
    "from cycler import cycler\n",
    "\n",
    "\n",
    "def filled_hist(ax, edges, values, bottoms=None, orientation='v',\n",
    "                **kwargs):\n",
    "    \"\"\"\n",
    "    Draw a histogram as a stepped patch.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    ax : Axes\n",
    "        The axes to plot to\n",
    "\n",
    "    edges : array\n",
    "        A length n+1 array giving the left edges of each bin and the\n",
    "        right edge of the last bin.\n",
    "\n",
    "    values : array\n",
    "        A length n array of bin counts or values\n",
    "\n",
    "    bottoms : float or array, optional\n",
    "        A length n array of the bottom of the bars.  If None, zero is used.\n",
    "\n",
    "    orientation : {'v', 'h'}\n",
    "       Orientation of the histogram.  'v' (default) has\n",
    "       the bars increasing in the positive y-direction.\n",
    "\n",
    "    **kwargs\n",
    "        Extra keyword arguments are passed through to `.fill_between`.\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    ret : PolyCollection\n",
    "        Artist added to the Axes\n",
    "    \"\"\"\n",
    "    print(orientation)\n",
    "    if orientation not in 'hv':\n",
    "        raise ValueError(f\"orientation must be in {{'h', 'v'}} \"\n",
    "                         f\"not {orientation}\")\n",
    "\n",
    "    kwargs.setdefault('step', 'post')\n",
    "    kwargs.setdefault('alpha', 0.7)\n",
    "    edges = np.asarray(edges)\n",
    "    values = np.asarray(values)\n",
    "    if len(edges) - 1 != len(values):\n",
    "        raise ValueError(f'Must provide one more bin edge than value not: '\n",
    "                         f'{len(edges)=} {len(values)=}')\n",
    "\n",
    "    if bottoms is None:\n",
    "        bottoms = 0\n",
    "    bottoms = np.broadcast_to(bottoms, values.shape)\n",
    "\n",
    "    values = np.append(values, values[-1])\n",
    "    bottoms = np.append(bottoms, bottoms[-1])\n",
    "    if orientation == 'h':\n",
    "        return ax.fill_betweenx(edges, values, bottoms,\n",
    "                                **kwargs)\n",
    "    elif orientation == 'v':\n",
    "        return ax.fill_between(edges, values, bottoms,\n",
    "                               **kwargs)\n",
    "    else:\n",
    "        raise AssertionError(\"you should never be here\")\n",
    "\n",
    "\n",
    "def stack_hist(ax, stacked_data, sty_cycle, bottoms=None,\n",
    "               hist_func=None, labels=None,\n",
    "               plot_func=None, plot_kwargs=None):\n",
    "    \"\"\"\n",
    "    Parameters\n",
    "    ----------\n",
    "    ax : axes.Axes\n",
    "        The axes to add artists too\n",
    "\n",
    "    stacked_data : array or Mapping\n",
    "        A (M, N) shaped array.  The first dimension will be iterated over to\n",
    "        compute histograms row-wise\n",
    "\n",
    "    sty_cycle : Cycler or operable of dict\n",
    "        Style to apply to each set\n",
    "\n",
    "    bottoms : array, default: 0\n",
    "        The initial positions of the bottoms.\n",
    "\n",
    "    hist_func : callable, optional\n",
    "        Must have signature `bin_vals, bin_edges = f(data)`.\n",
    "        `bin_edges` expected to be one longer than `bin_vals`\n",
    "\n",
    "    labels : list of str, optional\n",
    "        The label for each set.\n",
    "\n",
    "        If not given and stacked data is an array defaults to 'default set {n}'\n",
    "\n",
    "        If *stacked_data* is a mapping, and *labels* is None, default to the\n",
    "        keys.\n",
    "\n",
    "        If *stacked_data* is a mapping and *labels* is given then only the\n",
    "        columns listed will be plotted.\n",
    "\n",
    "    plot_func : callable, optional\n",
    "        Function to call to draw the histogram must have signature:\n",
    "\n",
    "          ret = plot_func(ax, edges, top, bottoms=bottoms,\n",
    "                          label=label, **kwargs)\n",
    "\n",
    "    plot_kwargs : dict, optional\n",
    "        Any extra keyword arguments to pass through to the plotting function.\n",
    "        This will be the same for all calls to the plotting function and will\n",
    "        override the values in *sty_cycle*.\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    arts : dict\n",
    "        Dictionary of artists keyed on their labels\n",
    "    \"\"\"\n",
    "    # deal with default binning function\n",
    "    if hist_func is None:\n",
    "        hist_func = np.histogram\n",
    "\n",
    "    # deal with default plotting function\n",
    "    if plot_func is None:\n",
    "        plot_func = filled_hist\n",
    "\n",
    "    # deal with default\n",
    "    if plot_kwargs is None:\n",
    "        plot_kwargs = {}\n",
    "    print(plot_kwargs)\n",
    "    try:\n",
    "        l_keys = stacked_data.keys()\n",
    "        label_data = True\n",
    "        if labels is None:\n",
    "            labels = l_keys\n",
    "\n",
    "    except AttributeError:\n",
    "        label_data = False\n",
    "        if labels is None:\n",
    "            labels = itertools.repeat(None)\n",
    "\n",
    "    if label_data:\n",
    "        loop_iter = enumerate((stacked_data[lab], lab, s)\n",
    "                              for lab, s in zip(labels, sty_cycle))\n",
    "    else:\n",
    "        loop_iter = enumerate(zip(stacked_data, labels, sty_cycle))\n",
    "\n",
    "    arts = {}\n",
    "    for j, (data, label, sty) in loop_iter:\n",
    "        if label is None:\n",
    "            label = f'dflt set {j}'\n",
    "        label = sty.pop('label', label)\n",
    "        vals, edges = hist_func(data)\n",
    "        if bottoms is None:\n",
    "            bottoms = np.zeros_like(vals)\n",
    "        top = bottoms + vals\n",
    "        print(sty)\n",
    "        sty.update(plot_kwargs)\n",
    "        print(sty)\n",
    "        ret = plot_func(ax, edges, top, bottoms=bottoms,\n",
    "                        label=label, **sty)\n",
    "        bottoms = top\n",
    "        arts[label] = ret\n",
    "    ax.legend(fontsize=10)\n",
    "    return arts\n",
    "\n",
    "\n",
    "# set up histogram function to fixed bins\n",
    "edges = np.linspace(-3, 3, 20, endpoint=True)\n",
    "hist_func = partial(np.histogram, bins=edges)\n",
    "\n",
    "# set up style cycles\n",
    "color_cycle = cycler(facecolor=plt.rcParams['axes.prop_cycle'][:4])\n",
    "label_cycle = cycler(label=[f'set {n}' for n in range(4)])\n",
    "hatch_cycle = cycler(hatch=['/', '*', '+', '|'])\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "stack_data = np.random.randn(4, 12250)\n",
    "dict_data = dict(zip((c['label'] for c in label_cycle), stack_data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "00572481",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{}\n",
      "{'facecolor': '#1f77b4', 'hatch': '/'}\n",
      "{'facecolor': '#1f77b4', 'hatch': '/'}\n",
      "v\n",
      "{'facecolor': '#ff7f0e', 'hatch': '*'}\n",
      "{'facecolor': '#ff7f0e', 'hatch': '*'}\n",
      "v\n",
      "{'facecolor': '#2ca02c', 'hatch': '+'}\n",
      "{'facecolor': '#2ca02c', 'hatch': '+'}\n",
      "v\n",
      "{'facecolor': '#d62728', 'hatch': '|'}\n",
      "{'facecolor': '#d62728', 'hatch': '|'}\n",
      "v\n",
      "{'edgecolor': 'w', 'orientation': 'h'}\n",
      "{'facecolor': '#1f77b4'}\n",
      "{'facecolor': '#1f77b4', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n",
      "{'facecolor': '#ff7f0e'}\n",
      "{'facecolor': '#ff7f0e', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n",
      "{'facecolor': '#2ca02c'}\n",
      "{'facecolor': '#2ca02c', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n",
      "{'facecolor': '#d62728'}\n",
      "{'facecolor': '#d62728', 'edgecolor': 'w', 'orientation': 'h'}\n",
      "h\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'x')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAALsCAYAAABz+wYCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABkD0lEQVR4nO3de3yU9Zn///eVAyQBI1hR8ARsVylCJUKg+HNFqSJ4RNtSUbFa+EpxrVYtrFhWGw+0sChSi4e6HsBu8VCqeEKrUlBWUUzQrniqWHGloKKsCEIgCZ/fHzPBSZhJ5nTPfc/cr+fjkQcz93zmM9dMhsk19+ltzjkBAAAgPIr8LgAAAAC5RQMIAAAQMjSAAAAAIUMDCAAAEDI0gAAAACFT4ncBXtl3331dr169/C4DQIDV1dV95pzr5ncd6eAzDkAyEn3OFWwD2KtXL9XW1vpdBoAAM7MP/a4hXXzGAUhGos85NgEDAACEDA0gAABAyNAAAgAAhEzB7gMIoG0NDQ1at26d6uvr/S7Fc2VlZTrooINUWlrqdykAEgjTZ5IXUv2cowEEQmrdunXaa6+91KtXL5mZ3+V4xjmnzz//XOvWrVPv3r39LgdAAmH5TPJCOp9zbAIGQqq+vl7f+MY3Cv6D1sz0jW98g7UKQMCF5TPJC+l8ztEAAiEWlg/asDxPIN/xfzV9qb52NIAAAAAhwz6AACRJE+a9mvTYDe/UaemtV2n4xb9Wj28Nijvm7gsGZ6s0SdK8efN04okn6oADDtjjtk2bNumss87S2rVr1atXLz300EPq2rVrVh8fQG59sW2n6huasjZfWWmxulR0SHp8TU2NOnfurMmTJ+udd97R2LFjZWZauHChBgwYoK1bt2rt2rV66aWXdM4552Rc35w5czRx4kRVVFTscdsHH3ygsWPHatOmTRo4cKB+//vfq0OH5J9LPDSAAFKSTPPnhXnz5ql///5xG8AZM2bo+OOP19SpUzVjxgzNmDFDM2fOzFltALKvvqFJ0x5ZnbX5pp/ZP+37Llq0SKNHj9a1117bYvnatWu1YMGCrDWA48aNi9sAXnnllbr88ss1duxYTZo0SXfffbcuuuiijB6PTcAAkpbN5u+rr77SKaecogEDBqh///568MEHJUl1dXU69thjNWjQII0cOVIbNmzQwoULVVtbq3PPPVdVVVXavn17i7keffRRnX/++ZKk888/X4sWLcqoNgDhNH36dPXp00cnnHCC3n33XUnS4sWLNWfOHN11110aPnx4i/FTp07V8uXLVVVVpZtvvrnFbRs2bNCwYcNUVVWl/v37a/ny5ZKkZ555RkcddZQGDhyoMWPGaOvWrbrlllu0fv16DR8+fI/HcM7pL3/5i37wgx9Iyt5nHGsAASQl22v+nn76aR1wwAF68sknJUmbN29WQ0ODLrnkEj366KPq1q2bHnzwQU2bNk333HOP5s6dqxtvvFHV1dV7zPXJJ5+oR48ekqQePXro008/zbg+AOFSV1enBx54QK+99poaGxs1cOBADRo0SCeffLImTZq0e3NwrBkzZujGG2/UE088scd8CxYs0MiRIzVt2jQ1NTVp27Zt+uyzz3TDDTfoueeeU6dOnTRz5kzNnj1b11xzjWbPnq2lS5dq3333bTHP559/ri5duqikJNKyHXTQQfrHP/6R8fOlAQTQLi82+37729/W5MmTdeWVV+rUU0/VMccco9WrV2v16tUaMWKEJKmpqWl3YwcAXlq+fLnOPPPM3ZtgTz/99IzmGzx4sMaPH6+GhgadccYZqqqq0vPPP6+33npLRx99tCRp586dOuqoo9qcxzm3x7JsHC1NAwigTV7t83fYYYeprq5Oixcv1lVXXaUTTzxRZ555pvr166cVK1akNNf++++vDRs2qEePHtqwYYP222+/rNUJIDyyeRqaYcOG6YUXXtCTTz6p8847T1OmTFHXrl01YsQI3X///UnPs+++++qLL75QY2OjSkpKtG7durj7QqeKfQABJOTlAR/r169XRUWFxo0bp8mTJ2vVqlXq06ePNm7cuLsBbGho0JtvvilJ2muvvbRly5a4c51++umaP3++JGn+/PkaPXp0VmsFUPiGDRumRx55RNu3b9eWLVv0+OOPt3uftj6XPvzwQ+2333668MILNWHCBK1atUpDhw7Viy++qDVr1kiStm3bpr/97W9tzmVmGj58uBYuXCgpe59xrAEEICnRaVsGSzMmefJ4b7zxhqZMmaKioiKVlpbq9ttvV4cOHbRw4UJdeuml2rx5sxobG3XZZZepX79+uuCCCzRp0iSVl5drxYoVKi8v3z3X1KlT9cMf/lB33323DjnkEP3xj3/0pGYAuVNWWpzRkbvx5mvLwIEDddZZZ6mqqko9e/bUMccc0+6cRxxxhEpKSjRgwABdcMEFuvzyy3fftmzZMs2aNUulpaXq3Lmz7rvvPnXr1k3z5s3T2WefrR07dkiSbrjhBh122GGaOHGiTjrpJPXo0UNLly5t8TgzZ87U2LFj9e///u868sgjNWHChDRegZYs3rblQlBdXe1qa2v9LgMIrLffflt9+/b1u4ycifd8zazOObfnUSV5gM84FJqwfSZ5IZXPOTYBAwAAhAwNIAAAQMjQAAIAAIQMDSAAAEDI0AACAACEDA0gAABAyHAeQAARC85KaljNn1ZH/v1+O+fnOufBTCtqYd68eTrxxBPjngH/j3/8o2pqavT2229r5cqVcfOCAeSZ7f8nNWzP3nyl5VJ516SH19TU7M7/feeddzR27FiZmRYuXKgBAwZo69atWrt2rV566SWdc845GZc3Z84cTZw4cXcUXay5c+dqzpw5ev/997Vx48Y98oLTQQMIQFIkb7K9GCTnnK59+C1J0i+/1y+rsUntmTdvnvr37x+3Aezfv78efvhh/eQnP8lZPQA81rBdeuLy9scl69SbU2oAYy1atEijR4/Wtdde22L52rVrtWDBgqw1gOPGjYvbAB599NE69dRTddxxx2X8OM3YBAxAkrSo9h9xQ8ebOee0qPYf6lxWos5lJe2Ob89XX32lU045RQMGDFD//v314IORNYZ1dXU69thjNWjQII0cOVIbNmzQwoULVVtbq3PPPVdVVVXavr3lWoG+ffuqT58+adcCAJI0ffp09enTRyeccILeffddSdLixYs1Z84c3XXXXRo+fHiL8VOnTtXy5ctVVVWlm2++ucVtGzZs0LBhw1RVVaX+/ftr+fLlkqRnnnlGRx11lAYOHKgxY8Zo69atuuWWW7R+/XoNHz58j8eQpCOPPFK9evXK6nNlDSAASdLYuS+ruMjUu1sn/WzUoZr43W9Kku78y/v6zdPv6YONX6lpl9POxl1JjX+znS/ETz/9tA444AA9+eSTkqTNmzeroaFBl1xyiR599FF169ZNDz74oKZNm6Z77rlHc+fO1Y033sjmXQCeqKur0wMPPKDXXntNjY2NGjhwoAYNGqSTTz5ZkyZN2r05ONaMGTN044036oknnthjvgULFmjkyJGaNm2ampqatG3bNn322We64YYb9Nxzz6lTp06aOXOmZs+erWuuuUazZ8/W0qVLs7J5Nxk0gAAkSTsbd6mstFhdO3XQuKN77l4+7uiemv/CWjmn3c1fMuPb8+1vf1uTJ0/WlVdeqVNPPVXHHHOMVq9erdWrV2vEiBGSpKamJvXo0SN7TzKgzKxM0guSOiryubzQOfdLf6sCwmX58uU688wzd2+CPf300zOab/DgwRo/frwaGhp0xhlnqKqqSs8//7zeeustHX300ZKknTt36qijjsq49nTQAAKQJBUXmQb26qLnrjpWZR2+Dk2v6FiiJb84Tsf/apleeX+Tmna5pMa357DDDlNdXZ0WL16sq666SieeeKLOPPNM9evXTytWrMj68wu4HZK+65zbamalkv7bzJ5yzr3sd2FAmGRzv+Zhw4bphRde0JNPPqnzzjtPU6ZMUdeuXTVixAjdf//9WXucdLEPIABJUtMupyN7dW3RzDUr61CsAT277G7+khnfnvXr16uiokLjxo3T5MmTtWrVKvXp00cbN27c3QA2NDTozTfflCTttdde2rJlS7pPL9BcxNbo1dLoT/o7WAJI2bBhw/TII49o+/bt2rJlix5//PF279PW59KHH36o/fbbTxdeeKEmTJigVatWaejQoXrxxRe1Zs0aSdK2bdv0t7/9rd25vMAaQBScjyZd1OL67NpXJUlXVA+OO/7gO273vKZ80N4BHbedI92Wxcd74403NGXKFBUVFam0tFS33367OnTooIULF+rSSy/V5s2b1djYqMsuu0z9+vXTBRdcoEmTJqm8vFwrVqxQeXn57rkeeeQRXXLJJdq4caNOOeUUVVVV6c9//nMWq/WemRVLqpP0z5Judc69EmfMREkTJemQQw5Jaf4vtzeofNdWbS9y6rhDKikqUXFlZRYqBzxSWh45cjeb87Vh4MCBOuuss1RVVaWePXvqmGOOaXfKI444QiUlJRowYIAuuOACXX7510ctL1u2TLNmzVJpaak6d+6s++67T926ddO8efN09tlna8eOHZKkG264QYcddpgmTpyok046ST169NDSpUtbPM4tt9yi//iP/9DHH3+sI444QieffLLuuuuuNF6Er1kmR/EFWXV1tautrfW7DPiABjA5b7/9tvr27et3GTkT7/maWZ1zLlBHlZhZF0mPSLrEObc60bhUP+M+3rxd39j1uTaVSJVbpJKiUpV23z/zgoEsCdtnkhdS+ZxjEzAABIhz7gtJyySN8rcSAIWM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Z8/dm4u/973v6Zprrkn1JWjBIudWLjzV1dWutrbW7zLgg48mtTw0fnZtZEfeK6oHxx1/8B23e15TEL399tvq27ev32XkTLzna2Z1zrl4u6kEXqqfcR9v3q5v7Ppcm0qkyi1SSVGpSrvv72GFQGrC9pnkhVQ+59gEDAAAEDI0gAAAACFDAwgAABAyNIAAAAAhQwMIAAAQMjSAAAAAIcN5AAFI2vP0OYm0d1qdZtk+vc68efN04okn6oADDtjjtquvvlqPPvqoioqKtN9++2nevHlxxwHIH41fbJarr8/afFZWppIueyc9vqamRp07d9bkyZP1zjvvaOzYsTIzLVy4UAMGDNDWrVu1du1avfTSSzrnnHMyrm/OnDmaOHFi3JPZT5gwQbW1tXLO6bDDDtO8efPUuXPnjB6PBhBAXpg3b5769+8ft7GbMmWKrr/+eknSLbfcouuuu44TQQN5ztXX6+OamqzN172mRlLyDWCsRYsWafTo0br22mtbLF+7dq0WLFiQtQZw3LhxcRvAm2++WZWVlZKkK664QnPnztXUqVMzejw2AQPwxVdffaVTTjlFAwYMUP/+/fXggw9Kkurq6nTsscdq0KBBGjlypDZs2KCFCxeqtrZW5557rqqqqrR9+/YWczV/MDbPSxYwgHRMnz5dffr00QknnKB3331XkrR48WLNmTNHd911l4YPH95i/NSpU7V8+XJVVVXp5ptvbnHbhg0bNGzYMFVVVal///5avny5JOmZZ57RUUcdpYEDB2rMmDHaunWrbrnlFq1fv17Dhw/f4zGkrz/jnHPavn17Vj7jWAMIwBdPP/20DjjgAD355JOSpM2bN6uhoUGXXHKJHn30UXXr1k0PPvigpk2bpnvuuUdz587VjTfeqOrq+MEd06ZN03333ae99957jxglAGhPXV2dHnjgAb322mtqbGzUwIEDNWjQIJ188smaNGnS7s3BsWbMmKEbb7xRTzzxxB7zLViwQCNHjtS0adPU1NSkbdu26bPPPtMNN9yg5557Tp06ddLMmTM1e/ZsXXPNNZo9e7aWLl2qfffdN259P/7xj7V48WIdfvjhuummmzJ+vqwBBOCLb3/723ruued05ZVXavny5dp777317rvvavXq1RoxYoSqqqp0ww03aN26dUnNN336dH300Uc699xzNXdukrnGABC1fPlynXnmmaqo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",
      "text/plain": [
       "<Figure size 648x756 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Work with plain arrays\n",
    "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 4.5), tight_layout=True)\n",
    "arts = stack_hist(ax1, stack_data, color_cycle + label_cycle + hatch_cycle,\n",
    "                  hist_func=hist_func)\n",
    "\n",
    "arts = stack_hist(ax2, stack_data, color_cycle,\n",
    "                  hist_func=hist_func,\n",
    "                  plot_kwargs=dict(edgecolor='w', orientation='h'))\n",
    "ax1.set_ylabel('counts')\n",
    "ax1.set_xlabel('x')\n",
    "ax2.set_xlabel('counts')\n",
    "ax2.set_ylabel('x')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "315d5460",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
